<?php
/**
 * Representa��o de um Campus.
 */
require_once('SubElementoDAO.php');


class SubElemento
{
      private $naturezaDespesa; // Chave-prim�ria da campus cadastrada no banco de dados.
      private $subElementoId;           // Nome da campus
      private $descricao;    // Respons�vel pela campus
      private $dao;            // Objeto para acesso ao banco de dados
      
      public function __set( $var, $val )
      {
             $this->$var = $val;
      }

      public function __get( $var )
      {
             return $this->$var;
      }
      
      public function __construct( $naturezaDespesa = NULL, $subElementoId = NULL, $descricao = NULL )
      {
             $this->naturezaDespesa = $naturezaDespesa;
             $this->subElementoId  = $subElementoId ;
             $this->descricao = $descricao;
             $this->dao = new SubElementoDAO();
      }
      
      /**
	 	* Carrega da tabela t_campus no banco de dados o registro referente a chave-prim�ria $id.
	 	* Transforma o registro retornado do banco de dados em um objeto Campus com essas informa��es.
	 	* @param $id - Chave-prim�ria no banco de dados do campus.
	 	* @return - Retorna um objeto do tipo Campus caso a opera��o seja efetuada com sucesso, caso contr�rio retorna FALSE.
	 	*/
      
	  public function cadastrarSubElemento(){
	  		$result = $this->dao->Salvar($this);
	  		return $result;	
	  }      
      public function CarregarSubElemento( $naturezaDespesaId, $subElementoId )
      {
             $resultado = $this->dao->Carregar(  $naturezaDespesaId, $subElementoId );
             return $resultado;
      }
      
      /**
      Busca por todos os registros inseridos na tabela t_campus.
      Para cada registro encontrado ser� criada uma inst�ncia de Campus com os valores das colunas do registro em quest�o.
      Por fim, caso sejam encontrados registros, todas as inst�ncias criadas ser�o inseridas dentro de um array que ser� retornado por este m�todo.
      Caso contr�rio, ser� retornado FALSE indicando que n�o foi encontrado nenhum registro.
      @return - Retorna um array de objetos do tipo Campus. Caso n�o encontre nenhum registro retorna FALSE.
      */
      public function CarregarSubElementos()
      {
             $resultado = $this->dao->CarregarTodos();
             return $resultado;
      }
      
      public function CarregarSubelementoPorNatureza($naturezaId){
      		$resultado = $this->dao->CarregarPorNatureza($naturezaId);
             return $resultado;
      }
      
      /**
	 	* Transforma o array com os registros retornados da tabela t_campus em objetos do tipo Campus.
	 	* @param $array - Array com os registros retornados de uma consulta a tabela t_campus.
	 	* @return Retorna um array de objetos do tipo Campus ou FALSE caso o argumento informado n�o seja do tipo requerido.
	 	*/
	  static public function ArrayParaObjetos( $array )
	  {
			if( !is_array($array) )
				return FALSE;
				
			$objetos = array();
			$naturezaDespesaDAO = new NaturezaDespesa();
			
			for( $i = 0; $i < count( $array ); $i++ )
			{
				$naturezaDespesa = $naturezaDespesaDAO->CarregarNaturezaDespesa($array[$i]['t_natureza_despesa_id']);
				$subElemento = new SubElemento( $naturezaDespesa, $array[$i]['sub_elemento_id'], $array[$i]['descricao'] );
				$objetos[] = $subElemento;
			}
			return $objetos;
	  }
}
?>
